home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
Pakiet bezpieczenstwa
/
mini Pentoo LiveCD 2006.1
/
mpentoo-2006.1.iso
/
livecd.squashfs
/
usr
/
include
/
captive
/
unicode.h
< prev
next >
Wrap
C/C++ Source or Header
|
2006-05-01
|
5KB
|
103 lines
/* $Id: unicode.h,v 1.6 2003/02/13 09:52:39 short Exp $
* Include file for unicode add-ons to reactos ntoskrnl/rtl/unicode.c for libcaptive
* Copyright (C) 2002 Jan Kratochvil <project-captive@jankratochvil.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; exactly version 2 of June 1991 is required
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef _CAPTIVE_UNICODE_H
#define _CAPTIVE_UNICODE_H 1
#include <glib/gmacros.h>
#include <glib/gtypes.h>
#include <glib/galloca.h>
#include "reactos/napi/types.h" /* for PUNICODE_STRING etc. */
#include "reactos/ntos/rtltypes.h" /* for ANSI_STRING */
#include <stddef.h> /* for size_t and wchar_t */
#include <glib/gunicode.h> /* for gunichar */
G_BEGIN_DECLS
/**
* captive_UnicodeString_to_utf8_alloca:
* @string_UnicodeString: #PUNICODE_STRING type of string to convert.
*
* alloca(3)-based conversion from #PUNICODE_STRING to plain #utf8 string.
*
* @Returns: #const #gchar * alloca(3)ed converted string @string_UnicodeString.
*/
#define captive_UnicodeString_to_utf8_alloca(string_UnicodeString) \
({ /* GCC dependent */ \
/* detect required memory size, g_alloca() cannot safely fail (really?) */ \
gchar *mem=g_alloca(_captive_UnicodeString_to_utf8_alloca_internal_sizeof(string_UnicodeString)); \
/* convert+copy the string to the prepared memory */ \
_captive_UnicodeString_to_utf8_alloca_internal_fill(mem,string_UnicodeString); \
(const gchar *)mem; \
})
size_t _captive_UnicodeString_to_utf8_alloca_internal_sizeof(const UNICODE_STRING *string_UnicodeString);
void _captive_UnicodeString_to_utf8_alloca_internal_fill(gchar *mem,const UNICODE_STRING *string_UnicodeString);
/**
* captive_utf8_to_UnicodeString_alloca:
* @string_utf8: #const #gchar * string in #utf8 to convert.
*
* alloca(3)-based conversion from plain #utf8 string to #PUNICODE_STRING.
*
* @Returns: #PUNICODE_STRING alloca(3)ed converted string @string_utf8.
*/
#define captive_utf8_to_UnicodeString_alloca(string_utf8) \
({ /* GCC dependent */ \
/* detect required memory size, g_alloca() cannot safely fail (really?) */ \
UNICODE_STRING *mem=g_alloca(_captive_utf8_to_UnicodeString_alloca_internal_sizeof(string_utf8)); \
/* convert+copy the string to the prepared memory */ \
_captive_utf8_to_UnicodeString_alloca_internal_fill(mem,string_utf8); \
(PUNICODE_STRING)mem; \
})
size_t _captive_utf8_to_UnicodeString_alloca_internal_sizeof(const gchar *string_utf8);
void _captive_utf8_to_UnicodeString_alloca_internal_fill(UNICODE_STRING *mem,const gchar *string_utf8);
gboolean captive_validate_ucs4(const gunichar *string_ucs4);
gboolean captive_validate_ucs2(const captive_ucs2 *string_ucs2);
gboolean captive_validate_ucs2_fixlen(const captive_ucs2 *string_ucs2,glong string_ucs2_fixlen);
gboolean captive_validate_utf8(const gchar *string_utf8);
glong captive_ucs2_strlen(const captive_ucs2 *string_ucs2) G_GNUC_PURE;
gboolean captive_validate_UnicodeString(const UNICODE_STRING *string_UnicodeString);
gboolean captive_validate_UnicodeString_noterm(const UNICODE_STRING *string_UnicodeString_noterm);
gboolean captive_validate_AnsiString(const ANSI_STRING *string_AnsiString);
gchar *captive_UnicodeString_to_utf8_malloc(const UNICODE_STRING *string_UnicodeString);
PUNICODE_STRING captive_utf8_to_UnicodeString_malloc(const gchar *string_utf8);
/* We can be G_GNUC_CONST as we really just map the pointer values.
* Initially we create the result content from the input content but it should not harm.
*/
const gunichar2 *captive_ucs4_to_utf16_const(const gunichar *string_ucs4) G_GNUC_CONST;
gboolean captive_ucs2_compare(const captive_ucs2 *string_a_ucs2,const captive_ucs2 *string_b_ucs2);
gboolean captive_UnicodeString_compare
(const UNICODE_STRING *string_a_UnicodeString,const UNICODE_STRING *string_b_UnicodeString);
gboolean captive_ucs2_compare_insensitive(const captive_ucs2 *string_a_ucs2,const captive_ucs2 *string_b_ucs2);
gboolean captive_UnicodeString_compare_insensitive
(const UNICODE_STRING *string_a_UnicodeString,const UNICODE_STRING *string_b_UnicodeString);
/* internal: */
void captive_FsRtlLegalAnsiCharacterArray_init(void);
G_END_DECLS
#endif /* _CAPTIVE_UNICODE_H */